package com.zhang.common;

import io.netty.util.AttributeKey;

/**
 * 常量类
 * @author zhanghao
 */
public class Constant {
    /**
     * 协议头
     */
    public static byte HEAD = 0X01;
    /**
     * 自定义协议最小长度
     */
    public static int MIN_LEN = 10;
    /**
     * 代理服务器跟代理客户端 附件属性
     */
    public static AttributeKey DOMAIN = AttributeKey.valueOf("DOMAIN");
    /**
     * 代理客户端附加属性
     */
    public static AttributeKey HTTP_ID = AttributeKey.valueOf("HTTP_ID");


    /**
     * 代理客户端附加属性
     */
    public static AttributeKey HTTP_PORT = AttributeKey.valueOf("HTTP_PORT");


    /**
     * 注册错误响应码
     */
    public class RegisterFailCodeType{
        /**
         * 域名存在
         */
        public static final byte DOMAIN_EXIST = 0x00;
        /**
         * 未知异常
         */
        public static final byte UN_KNOW_EXCEPTION = (byte) 0xff;
    }

    public class MessageType{
        /**
         * 客户端发送注册请求
         */
        public static final byte TYPE_REGISTER_REQUEST = 0x00;
        /**
         * 服务端响应注册成功
         */
        public static final byte TYPE_REGISTER_RESPONSE_SUCCESS = 0x01;
        /**
         * 服务端响应注册失败
         */
        public static final byte TYPE_REGISTER_RESPONSE_FAIL = 0x11;

        /**
         * 代理服务端给代理客户端发送数据
         */
        public static final byte TYPE_TRANSFER_REQUEST = 0x02;
        /**
         * 代理客户端响应代理服务端数据
         */
        public static final byte TYPE_TRANSFER_RESPONSE_SUCCESS = 0x03;

        /**
         * 代理客户端响应代理服务端数据
         */
        public static final byte TYPE_TRANSFER_RESPONSE_FAIL = 0x13;

        /**
         * 代理服务器发送给代理客户端  去 连接真实服务器的请求
         */
        public static final byte TYPE_CONNECT_REAL_SERVER_REQUEST = 0x04;
        /**
         * 代理客户端连接真实客户端 成功
         */
        public static final byte TYPE_CONNECT_REAL_SERVER_RESPONSE_SUCCESS = 0x05;
        /**
         * 代理客户端连接真实客户端 失败
         */
        public static final byte TYPE_CONNECT_REAL_SERVER_RESPONSE_FAIL = 0x06;
        /**
         * 代理客户端 连接真实客户端 断开 响应
         */
        public static final byte TYPE_CONNECT_REAL_SERVER_CLOSE_RESPONSE = 0x07;

    }


    public class HeartBeat{
        /**
         * 心跳类型
         */
        public static final byte TYPE_HEART_BEAT_RESPONSE = 0x0A;
    }

}
